/* class Player:
	dzialania:
		void changeCards(int tab[])- wymiana kart - obsuga wymiany kart z klasa Table
		- wybieranie karty do wymiany - mozliwos wyboru kart ktore wymieniamy ????????????????????? czy to jest potrzebne ??????????????
*/
public class Player {

	public String imie;
	public int[] ukladMa;
	public int[] dziwnaTablica=new int[6];
	
	public Player(String imie)
	{this.imie=imie;}
	
	public void ukladGracza(int tab[])
	{	
		this.ukladMa=new int[tab.length];
		System.arraycopy(tab, 0, this.ukladMa, 0, tab.length);
	}
	
	/// @hand[] jest tablica reprezentujaca karty trzymane przez gracza
	public int[] hand = new int[5];
	
	/* przyjmuje karty(whichChange[]) jakie wybral gracz do wymiany z hand[]. whichChange domyslnie jest wypelniona zerami. Zero oznacza brak karty
	changeForThis[] przechowuje karty na ktore mamy wymienic */
	public void step1(int[] pozycjeKart, int[] kartyNaKtoreZamieniam){
		
		int[] toChange = new int[pozycjeKart.length];
		
		for(int i=0; i<pozycjeKart.length; i++){
			toChange[i]=hand[pozycjeKart[i]];
		}
		
		changeCards(toChange,kartyNaKtoreZamieniam);
		
	}
	
	public void changeCards(int[] whichChange, int[] changeForThis ){
		
		if(whichChange.length == changeForThis.length){	// jesli rozmiar tablic jest taki sam metoda podejmuje dzialanie wymiany kart
			int pozycja;
			int i=0, j=0;
			while(i<whichChange.length){
				
				pozycja=find(whichChange[i]);	// przechowuje adres karty do wymiany znajdujacej sie w hand[];
				
				if( pozycja != -1 ) 	// jesli taka karta jest w hand
					hand[pozycja] = changeForThis[j];
				else
					hand[pozycja] = -1; // kod bledu
				
				i++; // przechodzi po whichChange[]
				j++; // przechodzi po changeForThis[]
			}
		}
	}
	
	//* zwraca pozcyje(w hand) karty do wymiany jesli taka istnieje, w przeciwnym wypadku -1
	private int find(int karta){
		
		int i=0;
		
		while(hand[i]!=karta && i<5)
			i++;
		
		if(i<4)
			return i;
		else if(i == 4 && hand[i]== karta)
			return i;						
		else
			return -1;			// kod bledu
	}
	
}

